package com.kfm.pm;

public class Test {

    public static void main(String[] args) {
        // 创建子类对象
        Son son = new Son("jwx", 20, "开发喵");
        son.print(); // Son  Son.print() // Son
        son.printInfo(); // name age school 调用重写了父类的方法
        Father son1 = new Son("tbc", 21, "开发喵");
        son1.print(); // Father  Father.print() // Father
        son1.printInfo(); // name age school 调用了重写了父类的方法
//        son.printSchool();
        // 方法重载: 同一个类 同名 参数列表不同（类型、数量、顺序不同）
        // 方法重写: 发生在继承关系中，不同类，方法名相同，参数列表相同，返回值类型一致，访问修饰符权限相同或变大，抛出异常相同缩小。
        // 父类的静态方法不能被重写（覆盖），只能被隐藏
        // 子类的静态方法不能隐藏父类的实例方法
        // 父类的实例方法如果要扩展内容，应该用子类的实例方法重写
        // 属性只能被隐藏，不能被覆盖
        System.out.println(son.a); // static 变量 a 2
        System.out.println(son1.a); // 1
        System.out.println(son.b);  // 2
        System.out.println(son1.b); // 1
        System.out.println(son.c); // 20
        System.out.println(son1.c); // 10
        System.out.println(son.d);  // 21
        System.out.println(son1.d); // 11
    }
}
